1. Field of the Invention
This invention relates to prefetching data and more particularly relates to determining prefetch data in a storage device.
2. Description of the Related Art
A computer such as a computer workstation, server, or mainframe computer often stores data in a storage device. The storage device may store the data on one or more storage media including hard disk drives, optical storage drives, micromechanical storage devices, magnetic tape drives, or semiconductor storage devices. In one embodiment, the storage device is configured as a storage controller that controls a plurality of hard disk drives.
The computer may read data from the storage device by requesting the data from the storage device. In response to the request, the storage device retrieves the data from the storage media and communicates the data to the computer. Unfortunately, there is typically a significant delay between when the storage device receives the request and when the storage device is able to communicate the data. The computer may also write data to the storage device by communicating the data to the storage device. The storage device receives the communicated data and writes the data to the storage media.
Storage devices often include a buffer to reduce the time required to write data to and read data from the storage device. The buffer is typically able to receive and communicate data more rapidly than the storage media, reducing the time required to perform reads and writes. For example, the computer may rapidly write data to the buffer of the storage device. The storage device then copies the data from the buffer to the storage media while the computer proceeds to another task.
The buffer may also reduce the time required for reads. For example, the storage device may retrieve data in advance of a read or prefetch the data to the buffer. Thus when the storage device receives a request for the data, the data may be communicated rapidly from the buffer. Unfortunately, the storage device is unable to determine which data should be prefetched to the buffer without direction. A software process executing on the computer may be configured to direct the storage device to prefetch data, but many software processes do not include prefetch capabilities.
From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method that determine prefetch data for a storage device. Beneficially, such an apparatus, system, and method would allow the storage device to prefetch data to speed data reads.